Makefile 語法很簡單, 所以末尾有點湊數的(但語法相關可參考)
但工作上配合 pytest 滿常使用 ( 尤其是demo的時候, 畢竟要執行的時候很方便 )
run:
python3 main.py
clean:
python3 clean_tool.py -env a -flag b -var c
make run 會執行 python3 main.py
make clean 會執行 python3 clean.py -env a -flag b -var c
ref: http://sianghuang.blogspot.com/2017/09/makefile-phony.html
.PHONY 一般來說有兩個目的:
為了避免定義的規則和工作目錄下的檔案名稱發生衝突
改善效能
詳細細節可以參考上面那篇文章
一般測試的話以 make test為例
.PHONY: test
test:
python3 test_main.py
nice to have, 初學的同學也可以先保持簡單且程式能正確執行為主, 但是想寫的完整一些時, 就可以把.PHONY加入
run:
echo $(var)
輸入 make run var=hi
預期會在畫面上看到hi, 表示成功把環境變數透過指令傳入給 Makefile了
以下工作上不一定用到但Makefile語法相關, 有時間再來補充解釋跟說明進來
gcc -o hello hello.c
sleep 3
./hello
以下為了湊字數, 是C++編譯可執行檔的makefile, 參考價值還不錯但是目前有點離題, 先把程式碼放上來, 等有機會再補充解釋
GPPPARAMS = -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore
ASPARAMS = --32
LDPARAMS = -melf_i386
objects = loader.o kernel.o
%.o: %.cpp
g++ $(GPPPARAMS) -o $@ -c $<
%.o: %.s
as $(ASPARAMS) -o $@ $<
mykernel.bin: linker.ld $(objects)
ld $(LDPARAMS) -T $< -o $@ $(objects)
install: mykernel.bin
sudo cp $< /boot/mykernel.bin